CreateOLEObject Word
Otázka od: Pavel Malinsky
11. 5. 2004 15:01
Ahoj,
mozna trochu prihloupla otazka, ale jeste
sem nemel potrebu to delat. Takze,
potrebuju vytvorit funkci, ktera mi v dokumentu
*.doc nahradi urcita slova vlastnimi(z DB).
Potrebuju:
1) otevrit Word (uz prvni potiz )
2) natahnout do nej obsah z BLOBU v DB
3) pustit na povel uzivatele nejakou svou
fci na nahrazeni nekterych slov
4) ulozit zpatky do BLOBU v DB
Takze sem zacal tim, ze sem sice v helphu a v histori konfery
neco nasel, ale nedari se mi vubec vytvorit OLEObject .
Pri CreateOLEObject('Word.Application') dostanu chybu,
ze "ClassFactory nemuze predat pozadovanou tridu".
Co delam, prosim, blbe ? Nebo snad mam jit jinou cestou,
jako treba pomoci komponent ze Servers ?
Env.: D5/D7, MS Office 2003
Zkousim:
procedure TForm1.Button1Click(Sender: TObject);
var
WordApp: OLEVariant;
begin
try
WordApp:= CreateOLEObject('Word.Application');
try
WordApp.Visible:= True;
// tady se bude neco dit
finally
WordApp.Quit;
WordApp:= Unassigned;
end;
except
on E: Exception do
begin
ShowMessage('Aplikace MS Word neni k dostupna !');
end;
end;
S pozdravem a dikem
=====================================
> Pavel Malinsky; malinsky@pmcom.cz <
=====================================
> GSM: 602 652 203 | ICQ: 322015967 <
=====================================
Odpovedá: Pave Gazda
12. 5. 2004 6:53
Ahoj,
ja pouzivam toto
> 1) otevrit Word (uz prvni potiz )
WordApp := TWordApplication.Create(nil);
try
with WordApp do
begin
ConnectKind := ckRunningInstance; { pripojeni ke spustenemu Wordu }
ConnectKind := ckNewInstance; { otevreni Wordu }
....
DisplayAlerts := Olefalse;
Activate;
Result := 0;
end;
except
WordApp.Free; { nebo FreeAndNil(WordApp) }
WordApp := nil;
end;
> 3) pustit na povel uzivatele nejakou svou
> fci na nahrazeni nekterych slov
FDopredu := True;
FWrap := wdFindContinue;
FMatchCase := Boolean(Rozlisovat);
FMatchWholeWord := Boolean(CelaSlova);
FReplace := wdReplaceAll;
WordObj.Dokumenty[idx].Activate;
WordObj.Dokumenty[Idx].Application.Selection.Find.ClearFormatting;
if WordObj.Verze < 9 then
WordObj.Dokumenty[Idx].Application.Selection.Find.ExecuteOld
(FText,FMatchCase,FMatchWholeWord,EmptyParam,
EmptyParam,EmptyParam,FDopredu,FWrap,EmptyParam,FNewText,
FReplace)
else
WordObj.Dokumenty[Idx].Application.Selection.Find.Execute
(FText,FMatchCase,FMatchWholeWord,EmptyParam,
EmptyParam,EmptyParam,FDopredu,FWrap,EmptyParam,FNewText,
FReplace,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
Pavel
placeny amater
Odpovedá: Pavel Malinsky
12. 5. 2004 10:20
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Pave Gazda
>
> Ahoj,
Ahoj,
dik, ale mam porad ten samej problem. Pri Activate
skoncim chybou "ClassFactory nemuze predat pozadovanou tridu."
a dal se nedostanu...
> ja pouzivam toto
>
>
> > 1) otevrit Word (uz prvni potiz )
>
>
> WordApp := TWordApplication.Create(nil);
> try
> with WordApp do
> begin
> ConnectKind := ckRunningInstance; { pripojeni ke
> spustenemu Wordu }
> ConnectKind := ckNewInstance; { otevreni Wordu }
> ....
> DisplayAlerts := Olefalse;
> Activate;
> Result := 0;
> end;
> except
> WordApp.Free; { nebo FreeAndNil(WordApp) }
> WordApp := nil;
> end;
S pozdravem a dikem
=====================================
> Pavel Malinsky; malinsky@pmcom.cz <
=====================================
> GSM: 602 652 203 | ICQ: 322015967 <
=====================================
Odpovedá: Bohac Frantisek
12. 5. 2004 14:36
A reinstalace office 2003 by nepomohla? Popr. zkus spustit dcomcnfg.exe a
podivat se na prava dane tridy ... a pak uz nevim.
Na Office 2k/XP je pristup pres OLE bez problemu.
F.
----- Original Message -----
> dik, ale mam porad ten samej problem. Pri Activate
> skoncim chybou "ClassFactory nemuze predat pozadovanou tridu."
> a dal se nedostanu...
Odpovedá: Pavel Malinsky
12. 5. 2004 19:36
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Bohac Frantisek
>
> A reinstalace office 2003 by nepomohla? Popr. zkus spustit
> dcomcnfg.exe a
> podivat se na prava dane tridy ... a pak uz nevim.
Muzu poprosit o blizsi informace a popis co mam v te
konfiguraci hledat, pripadne jaka prava nastavit?
Sem vzdy administrator a i veskere instalace SW
jsou pod uctem admina.
> Na Office 2k/XP je pristup pres OLE bez problemu.
Vsak si to pudu nekam vedle vyzkouset .
Bohuzel to musim resit pro MSO 2003...
Env: WinXP Pro, MS Office 2003
> ----- Original Message -----
>
> > dik, ale mam porad ten samej problem. Pri Activate
> > skoncim chybou "ClassFactory nemuze predat pozadovanou tridu."
> > a dal se nedostanu...
S pozdravem a dikem
=====================================
> Pavel Malinsky; malinsky@pmcom.cz <
=====================================
> GSM: 602 652 203 | ICQ: 322015967 <
=====================================
Odpovedá: Bohac Frantisek
13. 5. 2004 9:41
Jde o to, ze MS si nekdy nastavuje nesmyslne veci ve vztahu k zabezpeceni
... (viz OE6, kde implicitne zakazuje nebezpecne prilohy, ale dokumenty od
MS povoluje ... a prave v nich bych cekal nejakou chybu ...)
v tom dcomcnfg je treba prenastavit prava pro spousteni na tride:
"Dokument Aplikace Microsoft Word"
- zalozka Zabezpeceni: Pouzit vlastni spousteci prava ...
nemam XP ani Off2003, ale snad Ti tohle pomuze.
Na soukromy mail Ti posilam sejmute obrazovky.
F.
----- Original Message -----
> Muzu poprosit o blizsi informace a popis co mam v te
> konfiguraci hledat, pripadne jaka prava nastavit?
> Sem vzdy administrator a i veskere instalace SW
> jsou pod uctem admina.